package com.tcm.doctor.service;

import com.base.core.exception.ServiceException;
import com.base.core.pager.PageBean;
import com.tcm.doctor.domain.dto.DoctorDTO;
import com.tcm.doctor.domain.dto.RecommendDoctorDTO;
import com.tcm.doctor.domain.dto.UserDoctorDTO;

import java.util.List;

public interface DoctorService {

    /**
     * 获得医生与服务信息
     * @param userId
     * @return Doctor
     */
    DoctorDTO findDoctorByUserId(Long userId) throws ServiceException;

    List<DoctorDTO> listDoctorByUserIds(List<Long> userIds) throws ServiceException;

    /**
     * 获得医生与认证信息
     * @param userId
     * @return Doctor
     */
    DoctorDTO findDoctorVerifyByUserId(Long userId) throws ServiceException;

    DoctorDTO findDoctorByToken(String token) throws ServiceException;

    /**
     * 新增医生信息
     * @param doctor
     */
    void saveDoctor(DoctorDTO doctor) throws Exception;


    /**
     * 永久删除
     * @param userId
     */
    void deleteDoctor(Long userId) throws ServiceException;

    /**
     * 删除到回收站
     * @param userId
     */
    void deleteLogicDoctor(Long userId) throws ServiceException;

    /**
     * 用户端医生列表
     * @param start
     * @param pagesize
     * @return
     */
    PageBean<UserDoctorDTO> listDoctorPage(Long start, Long pagesize) throws ServiceException;

    List<RecommendDoctorDTO> listRecommendDoctor(Long hospitalId, Integer quantity) throws ServiceException;
}
